/*
 * RReArrRev.h
 *
 *  Created on: May 15, 2012
 *      Author: kobe
 */

#ifndef RREARRREV_H_
#define RREARRREV_H_

#include "VariousRule.h"

class R_ReArr_Rev: public VariousRule {
public:
	R_ReArr_Rev();
	virtual ~R_ReArr_Rev();
	std::vector<Sequent*> run(Sequent*);
	std::vector<Sequent*> run(Sequent*, size_t);
	std::string toString();
	std::string toLatex();
	bool isLoopRule();
	bool isVariousRule();
	void popLastSequent();
private:
	Context* search(Context*);
	void ReArrange(Context*);
	std::vector<Sequent*> mPastSequent;
	Sequent* mCurrentSequent;
};

#endif /* RREARRREV_H_ */
